package com.company.笔试.二叉树两个节点的公共祖先;

import com.company.笔试.TreeNode;

/**
 * @ClassName Solution
 * @Description TODO
 * @Author ylr
 * @Date 2021/7/21 13:43
 * @Version 1.0
 */
public class Solution {
    public static void main(String[] args) {

    }


    public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
        // write code here
        return helper(root, o1, o2).val;


    }

    private TreeNode helper(TreeNode root, int o1, int o2) {
        if (root==null||root.val==o1||root.val==o2) return root;
        TreeNode left = helper(root.left, o1, o2);
        TreeNode right = helper(root.right, o1, o2);
        //如果left为空，说明这两个节点在root结点的右子树上，我们只需要返回右子树查找的结果即可

        if (left == null){
            return right;
        }


        if (right==null){
            return left;
        }
        //如果left和right都不为空，说明这两个节点一个在root的左子树上一个在root的右子树上，
        //我们只需要返回cur结点即可
        return root;
    }


}

